perm filename SLIBRY.LTR[UP,DOC] blob sn#152701 filedate 1975-03-28 generic text, type T, neo UTF8
TO:	all SAIL users
FROM:	Scott Daniels
RE:	SAIL library

	For some time, there has been talk of trying to create a library
of SAIL routines in order to save programming time on any one project. 
In a recent discussion between members of the SUMEX and IMSSS programming
communities, we decided to try to create such a library. In order to 
encourage use of the library, we felt that it must be reliable, stable, 
well documented, simple to use, and useful to a fairly large community.  
There are already a number of SAIL libraries at IMSSS, but they are, 
in some cases, quite specialized.  What we hope to do is collect many 
commonly used routines, along with as many other general programs as 
possible from the SAIL user community.  

	On the other hand, we realize that the documentation of a program
to library standards involves some extra effort for which we have limited
means of compensation.  In favorable circumstances, this includes:

	a)  Appreciation and recognition by one's colleagues.

	b)  Cataloging and some degree of maintenance.

	c)  Assured availability from a <LIBRARY> directory.

	As an unfiltered collection could readily get out of hand with an
aggregation of redundant or poorly tested programs than might generate
more confusion than value, we are setting a rather strict threshold for
the <LIBRARY> set.  See the further remarks below on <PROGRAM-CATALOG>
for additional levels of communication about useful program sources.

	The model for the SAIL library submission and inclusion process 
will be similar to that of a technical journal.  Specifically, submitted 
programs will be reviewed according to the guidelines given below and 
comments and suggested changes, if any, referred back to the author.
The reviewing and verification process is a vital part of the library, 
since one of the critical needs for the library is that every procedure 
work as advertised (it seems clear that any potential user of the 
library will only use it as long as he is able to rely on the routines 
included).

	We will likely set up several modes of responsibility for
library routines depending on the desires of the author.  In some cases
the author may want sole control over bug fixing, changes, etc.  In
others this responsibility may be delegated to the librarian or shared
jointly.  The library resources available for program maintenance will
be limited so we will have to be selective in the latter cases.  In
any case we will observe strict rules of attribution for contributing
authors as with technical papers.  Upon submission, the author should
include a description of the development of the program with any
appropriate acknowledgements.

	Since we cannot anticipate all of the problems that we will 
encounter when the library gets under way, we are starting with a 
limited community of SAIL users from SUAI, SRI, SUMEX, and IMSSS.  This 
letter is a request for your suggestions, procedures, comments, or 
ideas for the library.  We would especially like to hear reactions to our 
ideas on what procedures should be included, comments on which procedures 
you would like to see in the library, and any suggestions
about how to make the library an effective tool.


REVIEW PROCEDURES

	Every program submitted is to be reviewed by at least two people, 
who will examine the routine for accuracy, and comment upon its
appropriateness for the library.  Referees will be selected from among
the community of active SAIL users.  The librarian will examine the 
routine and coordinate any necessary iterations with the author.  Upon
acceptance, the librarian will place the routine in the library and
distribute it to participating centers.

Functions: 

   Librarian	1) program submission point
		2) complaint center
		3) responsibility for maintenance, updates, etc.
		4) communications center (user-author interfaces)

   Reviewer	1) program verification
		2) documentation examination
		3) initial modifications
		4) possible program improvements


     INFORMATION TO INCLUDE ALONG ANY WITH PROGRAM BEING SUBMITTED
     ----------- -- ------- ----- --- ---- ------- ----- ---------


Suggested program name (six or less characters):
Author(s) and acknowledgements:
How to reach:
Do you wish to be anonymous? (no credits listed):
Do you wish to be unavailable? (no method of reaching listed):

Disposition of non-cosmetic alterations:
	1)  inform author(s) and make any changes 
	2)  request author(s) to make changes
	3)  accept or reject only, no changes
	4)  author doesn't ever want to hear about this program again
				change or throw away...

Bugs encountered(*):
	1)  willing to hear from users
	2)  willing to hear from librarian
	3)  don't want to know

(*) Hopefully this will rarely, if ever, happen.  Every procedure will
    have 2 people verify it before placing it in the library.  If a 
    program fails to perform as documented, it will be fixed.  However,
    if a "bad" program slips in, it may be 
	(a) removed (only if drastic problem), or 
	(b) fixed and renamed (old procedure and name will remain)


HOW TO SUBMIT A PROCEDURE:
--- -- ------ - ----------
a) all submissions must be in a format that can be easily machine read
    (actual file on the SUMEX or IMSSS systems, DEC-tape, or paper tape)

b) submissions should include the procedure, the above information, and
    anything else you feel will help us.

c) Where to submit:
	1) From IMSSS place a copy of the file on <SAILIB>, and SNDMSG 
	   a note to <SCOTT> saying the file is there.

	2) From SUMEX place a copy of the file on <LIBRARY>, and SNDMSG 
	   a note to <DANIELS> saying the file is there.

	3) From SUAI either use the IMSSS linker program to submit as
	   if from IMSSS, use the ARPA net to get to SUMEX, or use 
	   ID-mail to the address below.

	4) From SRI either use the ARPA net to get to SUMEX, or mail to

		   Scott Daniels 
		   Ventura hall, IMSSS,
		   Stanford, California   94305


NOTE: As of the writing of this letter, the ARPA connection to SUMEX 
	is not always operational.  Those users who would normally use 
	the ARPA connection to communicate with us may have to resort 
	to DEC-tape for a while (We will return your tape as soon as 
	we have copied it onto our system).


PROCEDURE DESIGN GUIDELINES:
--------- ------ ----------

1) no large external data structure should be required
2) the procedure should be a single conceptual unit
3) only one assembly switch allowed: "DEC!CODE" which will be true if
	the library is being assembled for a DEC-system, and false if 
	it is being assembled for a TENEX system.
4) the procedure may depend on several library functions, but these 
	should be clearly stated in the documentation, and the list of 
	these (including any further chaining) should be kept to a 
	minimum.
5) no tremendously long argument lists (I suspect it is not conceptually 
	clean if it takes 20 arguments)
6) simple procedures and procedures that return values are encouraged 
7) procedures should somehow process any value thrown to them (if you
	are writing log(x), deal with the -1 case)
8) the standard code comment character will be "!" use it to do 
	code-related comments to help the reviewers verify your program
9) a user-oriented description of the code and a brief abstract should 
	be included (do not necessarily say how the function does what 
	it does here, say what it does and how to use it).  The abstract
	should be oriented to facilitate retrieval of the program
	description by keyword search.
10) the procedure should be useful for more than four or five people
	(let's try and avoid procedure pollution).  These routines will
	hopefully be included in many sail installations, and this is
	not the mechanism for inserting: 
		SIMPLE BOOLEAN PROCEDURE fullmoon( INTEGER date ); 
11) some of the above problems may be corrected by the reviewers, don't
	be frightened out of submitting a program that fails to fit all
	of the above criteria.  The amount of rewriting done or remarks 
	and suggestions made will vary from reviewer to reviewer, however. 
	If you want to be sure that your procedure gets the benefit of
	professional review and is eligible for the library, write and 
	document it carefully.
12) procedure groups are possible (several routines that together share
	information or some non-library procedure).
13) the following words are not to be defined in the procedure :
	"BFAIL", "EFAIL", "BFORT", "EFORT", "BSAIL", "ESAIL", 
	"DECL", "DESR", "ISAIL", or "SSAIL". 
14) Complex programs should include self-documenting help features



	NOTE: all file names here are tentative, the actual names at
		any installation will be decided when the first copy
		of the library material is delivered.

All user access should be read-only except for the files:
	LIBRARY.GRIPE		the obvious...valid complaints and 
					hate mail   (message.txt ?)
	LIBRARY.REQUEST		requests for library functions
	LIBRARY.SUBMISSIONS	source for programs for submission

User access:	4 files that can be "REQUIRE SOURCE!FILE"'d:
			1)	LIBFUN.LIB
			2)	LIBFUN.DCL
			3)	LIBIO.LIB
			4)	LIBIO.DCL

documentation access:	(includes user-oriented documentation, credits, 
			where to find the source code, index...)
			1)	LIBFUN.DOC
			2)	LIBIO.DOC

source code:	
	files that can have pages lifted (for anyone that wants the 
	library functions "almost like, but") to find the source code 
	for a particular procedure, see that procedure's documentation.



<CATALOG>  (Somewhat along the model of DECUS listings)

	Many additional programs may not be ripe for library 
authentication.  We will therefore also maintain a catalog of abstracts 
describing programs that reside on the author's directory but which may 
be available on whatever terms are documented in the abstract.  We may 
also maintain a collection of unverified program sources upon request of 
authors who may be leaving a particular project.  Facility managers will 
take no responsibility for these texts.  At minimum they should be 
self-documenting with respect to whatever further information can be 
obtained about them.